1. Technical Field
The technical field relates generally to systems and methods for controlling device operation and, more particularly, to systems and methods for controlling execution of driverless operations on attached peripheral devices.
2. Background
Conventional device installation on a computer system typically involves configuration of the Operating System (“OS”) executing on the computer system to accept and manage peripheral devices. Peripheral devices (also referred to as “devices”) include any hardware based device attached to the computer system that was not part of its original configuration. In conventional OS's, the OS is configured to automatically detect these devices and load appropriate device drivers based on a device type and any available device description. Automatic detection and loading of device drivers can assist users in integrating and operating standard devices (e.g., a mouse, a keyboard, an external hard drive, a printer, etc.). However, conventional device driver operation is known to have significant flaws, including undesired operation, OS instability and even OS failure due to driver errors.
Standardizing the communication and operations of device drivers has attempted to resolve some of these issues. For peripheral devices connected through a USB connection, a Human Interface Device (“HID”) architecture can apply. Any device can be a USB HID class device as long it is configured to meet the USB HID class logical specifications. The HID specification defines standard configurations and communication channels employed. As part of the standard communication protocol, the HID specification defines control endpoints and interrupt endpoints for communicating with USB devices among other communication channels. Within the HID architecture certain types of devices can be organized into specific classes. For example, an uninterruptible power supply device (“UPS”) can be grouped into a Power Device Class, and a compliant UPS configured with USB connectivity can also be referred to as a HID Power Device.
When any USB compliant device is connected to a host computer system through a USB connection the device establishes communication with the host computer system. The OS executing on the host computer system identifies the device based on description information provided by the device, which can include identification of a specific class and can include a specific type. Based on the identifying information retrieved by the OS, the OS identifies an appropriate driver and loads the driver to manage the device. In some examples, the OS does not have a driver specific to the device and an end user must first install a vendor supplied device driver to manage the device. Conventional OS's are typically distributed with a multitude of custom drivers supplied by vendors/manufacturers of peripheral devices.
In addition, custom device drivers can be installed through software accompanying a given peripheral device. In some cases, the OS can locate appropriate drivers through a network connection, e.g., the Internet. The OS installs the identified driver and can load the driver to manage the device. In other cases, device drivers are provided on installation media provided with a peripheral device.
USB connected devices communicate through multiple types of sub-communication channels defined by the USB specification. For USB and USB HID compliant device communication can occur using Control Endpoints (Get/Set Feature) for bi-directional communication and Interrupt Endpoints for asynchronous communication initiated by the device or the host OS. Conventionally, an OS only allows one software application (e.g. the installed and loaded driver) to communicate to a peripheral device using the interrupt endpoints. Conventionally, if interrupt control or communication is required by another application or tool, or if additional feature support is required, a new driver must be installed and loaded by the OS to replace the existing driver.